#ifndef KEYCODEUTIL_H
#define KEYCODEUTIL_H

#include <qnamespace.h>
#include <qmap.h>
#include <qstring.h>

#include "winuser.h"

typedef struct key_pair
{
	QString name;
	int code;
	
	key_pair(const QString &s, int c): name(s), code(c)
	{}
} KeyPair;

static KeyPair HostKeyPairs[] = {
	KeyPair("0", '0'),
	KeyPair("1", '1'),
	KeyPair("2", '2'),
	KeyPair("3", '3'),
	KeyPair("4", '4'),
	KeyPair("5", '5'),
	KeyPair("6", '6'),
	KeyPair("7", '7'),
	KeyPair("8", '8'),
	KeyPair("9", '9'),
	KeyPair("A", 'A'),
	KeyPair("B", 'B'),
	KeyPair("C", 'C'),
	KeyPair("D", 'D'),
	KeyPair("E", 'E'),
	KeyPair("F", 'F'),
	KeyPair("G", 'G'),
	KeyPair("H", 'H'),
	KeyPair("I", 'I'),
	KeyPair("J", 'J'),
	KeyPair("K", 'K'),
	KeyPair("L", 'L'),
	KeyPair("M", 'M'),
	KeyPair("N", 'N'),
	KeyPair("O", 'O'),
	KeyPair("P", 'P'),
	KeyPair("Q", 'Q'),
	KeyPair("R", 'R'),
	KeyPair("S", 'S'),
	KeyPair("T", 'T'),
	KeyPair("U", 'U'),
	KeyPair("V", 'V'),
	KeyPair("W", 'W'),
	KeyPair("X", 'X'),
	KeyPair("Y", 'Y'),
	KeyPair("Z", 'Z'),
	KeyPair("VK_LBUTTON", 1),
	KeyPair("VK_RBUTTON", 2),
	KeyPair("VK_CANCEL", 3),
	KeyPair("VK_MBUTTON", 4),
	KeyPair("VK_XBUTTON1", 5),
	KeyPair("VK_XBUTTON2", 6),
	KeyPair("VK_BACK", 8),
	KeyPair("VK_TAB", 9),
	KeyPair("VK_CLEAR", 12),
	KeyPair("VK_RETURN", 13),
	KeyPair("VK_SHIFT", 16),
	KeyPair("VK_CONTROL", 17),
	KeyPair("VK_MENU", 18),
	KeyPair("VK_PAUSE", 19),
	KeyPair("VK_CAPITAL", 20),
	KeyPair("VK_KANA", 0x15),
	KeyPair("VK_HANGEUL", 0x15),
	KeyPair("VK_HANGUL", 0x15),
	KeyPair("VK_JUNJA", 0x17),
	KeyPair("VK_FINAL", 0x18),
	KeyPair("VK_HANJA", 0x19),
	KeyPair("VK_KANJI", 0x19),
	KeyPair("VK_ESCAPE", 0x1B),
	KeyPair("VK_CONVERT", 0x1C),
	KeyPair("VK_NONCONVERT", 0x1D),
	KeyPair("VK_ACCEPT", 0x1E),
	KeyPair("VK_MODECHANGE", 0x1F),
	KeyPair("VK_SPACE", 32),
	KeyPair("VK_PRIOR", 33),
	KeyPair("VK_NEXT", 34),
	KeyPair("VK_END", 35),
	KeyPair("VK_HOME", 36),
	KeyPair("VK_LEFT", 37),
	KeyPair("VK_UP", 38),
	KeyPair("VK_RIGHT", 39),
	KeyPair("VK_DOWN", 40),
	KeyPair("VK_SELECT", 41),
	KeyPair("VK_PRINT", 42),
	KeyPair("VK_EXECUTE", 43),
	KeyPair("VK_SNAPSHOT", 44),
	KeyPair("VK_INSERT", 45),
	KeyPair("VK_DELETE", 46),
	KeyPair("VK_HELP", 47),
	KeyPair("VK_LWIN", 0x5B),
	KeyPair("VK_RWIN", 0x5C),
	KeyPair("VK_APPS", 0x5D),
	KeyPair("VK_SLEEP", 0x5F),
	KeyPair("VK_NUMPAD0", 0x60),
	KeyPair("VK_NUMPAD1", 0x61),
	KeyPair("VK_NUMPAD2", 0x62),
	KeyPair("VK_NUMPAD3", 0x63),
	KeyPair("VK_NUMPAD4", 0x64),
	KeyPair("VK_NUMPAD5", 0x65),
	KeyPair("VK_NUMPAD6", 0x66),
	KeyPair("VK_NUMPAD7", 0x67),
	KeyPair("VK_NUMPAD8", 0x68),
	KeyPair("VK_NUMPAD9", 0x69),
	KeyPair("VK_MULTIPLY", 0x6A),
	KeyPair("VK_ADD", 0x6B),
	KeyPair("VK_SEPARATOR", 0x6C),
	KeyPair("VK_SUBTRACT", 0x6D),
	KeyPair("VK_DECIMAL", 0x6E),
	KeyPair("VK_DIVIDE", 0x6F),
	KeyPair("VK_F1", 0x70),
	KeyPair("VK_F2", 0x71),
	KeyPair("VK_F3", 0x72),
	KeyPair("VK_F4", 0x73),
	KeyPair("VK_F5", 0x74),
	KeyPair("VK_F6", 0x75),
	KeyPair("VK_F7", 0x76),
	KeyPair("VK_F8", 0x77),
	KeyPair("VK_F9", 0x78),
	KeyPair("VK_F10", 0x79),
	KeyPair("VK_F11", 0x7A),
	KeyPair("VK_F12", 0x7B),
	KeyPair("VK_F13", 0x7C),
	KeyPair("VK_F14", 0x7D),
	KeyPair("VK_F15", 0x7E),
	KeyPair("VK_F16", 0x7F),
	KeyPair("VK_F17", 0x80),
	KeyPair("VK_F18", 0x81),
	KeyPair("VK_F19", 0x82),
	KeyPair("VK_F20", 0x83),
	KeyPair("VK_F21", 0x84),
	KeyPair("VK_F22", 0x85),
	KeyPair("VK_F23", 0x86),
	KeyPair("VK_F24", 0x87),
	KeyPair("VK_NUMLOCK", 0x90),
	KeyPair("VK_SCROLL", 0x91),
	KeyPair("VK_LSHIFT", 0xA0),
	KeyPair("VK_RSHIFT", 0xA1),
	KeyPair("VK_LCONTROL", 0xA2),
	KeyPair("VK_RCONTROL", 0xA3),
	KeyPair("VK_LMENU", 0xA4),
	KeyPair("VK_RMENU", 0xA5),
	KeyPair("VK_BROWSER_BACK", 0xA6),
	KeyPair("VK_BROWSER_FORWARD", 0xA7),
	KeyPair("VK_BROWSER_REFRESH", 0xA8),
	KeyPair("VK_BROWSER_STOP", 0xA9),
	KeyPair("VK_BROWSER_SEARCH", 0xAA),
	KeyPair("VK_BROWSER_FAVORITES", 0xAB),
	KeyPair("VK_BROWSER_HOME", 0xAC),
	KeyPair("VK_VOLUME_MUTE", 0xAD),
	KeyPair("VK_VOLUME_DOWN", 0xAE),
	KeyPair("VK_VOLUME_UP", 0xAF),
	KeyPair("VK_MEDIA_NEXT_TRACK", 0xB0),
	KeyPair("VK_MEDIA_PREV_TRACK", 0xB1),
	KeyPair("VK_MEDIA_STOP", 0xB2),
	KeyPair("VK_MEDIA_PLAY_PAUSE", 0xB3),
	KeyPair("VK_LAUNCH_MAIL", 0xB4),
	KeyPair("VK_LAUNCH_MEDIA_SELECT", 0xB5),
	KeyPair("VK_LAUNCH_APP1", 0xB6),
	KeyPair("VK_LAUNCH_APP2", 0xB7),
	KeyPair("VK_OEM_1", 0xBA),
	KeyPair("VK_OEM_PLUS", 0xBB),
	KeyPair("VK_OEM_COMMA", 0xBC),
	KeyPair("VK_OEM_MINUS", 0xBD),
	KeyPair("VK_OEM_PERIOD", 0xBE),
	KeyPair("VK_OEM_2", 0xBF),
	KeyPair("VK_OEM_3", 0xC0),
	KeyPair("VK_OEM_4", 0xDB),
	KeyPair("VK_OEM_5", 0xDC),
	KeyPair("VK_OEM_6", 0xDD),
	KeyPair("VK_OEM_7", 0xDE),
	KeyPair("VK_OEM_8", 0xDF),
	KeyPair("VK_OEM_102", 0xE2),
	KeyPair("VK_PROCESSKEY", 0xE5),
	KeyPair("VK_PACKET", 0xE7),
	KeyPair("VK_ATTN", 0xF6),
	KeyPair("VK_CRSEL", 0xF7),
	KeyPair("VK_EXSEL", 0xF8),
	KeyPair("VK_EREOF", 0xF9),
	KeyPair("VK_PLAY", 0xFA),
	KeyPair("VK_ZOOM", 0xFB),
	KeyPair("VK_NONAME", 0xFC),
	KeyPair("VK_PA1", 0xFD),
	KeyPair("VK_OEM_CLEAR", 0xFE),
	KeyPair("", 0x00)
};

static KeyPair QtKeyPairs[] = {
	KeyPair("0", Qt::Key_0),
	KeyPair("1", Qt::Key_1),
	KeyPair("2", Qt::Key_2),
	KeyPair("3", Qt::Key_3),
	KeyPair("4", Qt::Key_4),
	KeyPair("5", Qt::Key_5),
	KeyPair("6", Qt::Key_6),
	KeyPair("7", Qt::Key_7),
	KeyPair("8", Qt::Key_8),
	KeyPair("9", Qt::Key_9),
	KeyPair("0", Qt::Key_0),
	KeyPair("A", Qt::Key_A),
	KeyPair("B", Qt::Key_B),
	KeyPair("C", Qt::Key_C),
	KeyPair("D", Qt::Key_D),
	KeyPair("E", Qt::Key_E),
	KeyPair("F", Qt::Key_F),
	KeyPair("G", Qt::Key_G),
	KeyPair("H", Qt::Key_H),
	KeyPair("I", Qt::Key_I),
	KeyPair("J", Qt::Key_J),
	KeyPair("K", Qt::Key_K),
	KeyPair("L", Qt::Key_L),
	KeyPair("M", Qt::Key_M),
	KeyPair("N", Qt::Key_N),
	KeyPair("O", Qt::Key_O),
	KeyPair("P", Qt::Key_P),
	KeyPair("Q", Qt::Key_Q),
	KeyPair("R", Qt::Key_R),
	KeyPair("S", Qt::Key_S),
	KeyPair("T", Qt::Key_T),
	KeyPair("U", Qt::Key_U),
	KeyPair("V", Qt::Key_V),
	KeyPair("W", Qt::Key_W),
	KeyPair("X", Qt::Key_X),
	KeyPair("Y", Qt::Key_Y),
	KeyPair("Z", Qt::Key_Z),
	KeyPair("Calendar", Qt::Key_F9),
	KeyPair("Address", Qt::Key_F10),
	KeyPair("Mail", Qt::Key_F13),
	KeyPair("Home", Qt::Key_F12),
	KeyPair("BackSpace", Qt::Key_BackSpace),
	KeyPair("Tab", Qt::Key_Tab),
	KeyPair("Shift", Qt::Key_Shift),
	KeyPair("Space", Qt::Key_Space),
	KeyPair("Return", Qt::Key_Return),	// != Key_Return
	KeyPair("Up", Qt::Key_Up),
	KeyPair("Down", Qt::Key_Down),
	KeyPair("Left", Qt::Key_Left),
	KeyPair("Right", Qt::Key_Right),
	KeyPair("Menu", Qt::Key_F11),
	KeyPair("OK", Qt::Key_F33),
	KeyPair("Cancel", Qt::Key_Escape),
	KeyPair("Kana", Qt::Key_F26),
	KeyPair("Zenkaku", Qt::Key_F21),
	KeyPair("-", Qt::Key_Minus),
	KeyPair(",", Qt::Key_Comma),
	KeyPair(".", Qt::Key_Period),
	KeyPair("Fn + 1", 0x200f),
	KeyPair("Fn + 2", 0x2010),
	KeyPair("Fn + 3", 0x2012),
	KeyPair("Fn + 4", 0x2011),
	KeyPair("Fn + 5", 0x201b),
	KeyPair("Fn + 6", 0x200a),
	KeyPair("Fn + 7", 0x200b),
	KeyPair("Fn + 8", 0x200c),
	KeyPair("Fn + 9", 0x2007),
	KeyPair("Fn + 0", 0x2008),
	KeyPair("Fn + A", 0x2017),
	KeyPair("Fn + B", Qt::Key_Underscore),
//	KeyPair("Fn + C", Qt::Key_),
	KeyPair("Fn + D", Qt::Key_yen),
	KeyPair("Fn + E", Qt::Key_Equal),
	KeyPair("Fn + F", Qt::Key_Backslash),
	KeyPair("Fn + G", Qt::Key_Semicolon),
	KeyPair("Fn + H", Qt::Key_Colon),
	KeyPair("Fn + I", Qt::Key_sterling),
	KeyPair("Fn + J", Qt::Key_Asterisk),
	KeyPair("Fn + K", 0x2022),
	KeyPair("Fn + L", Qt::Key_Bar),
	KeyPair("Fn + M", 0x201a),
	KeyPair("Fn + N", 0x2019),
	KeyPair("Fn + O", 0x2015),
	KeyPair("Fn + P", 0x2016),
	KeyPair("Fn + Q", 0x2014),
	KeyPair("Fn + R", Qt::Key_Plus),
	KeyPair("Fn + S", 0x2018),
	KeyPair("Fn + T", Qt::Key_BracketLeft),
	KeyPair("Fn + U", Qt::Key_cent),
//	KeyPair("Fn + V", Qt::Key_),
	KeyPair("Fn + W", Qt::Key_AsciiCircum),
//	KeyPair("Fn + X", Qt::Key_),
	KeyPair("Fn + Y", Qt::Key_BracketRight),
//	KeyPair("Fn + Z", Qt::Key_),
	KeyPair("Fn + BackSpace", Qt::Key_Delete),
	KeyPair("Fn + Tab", Qt::Key_CapsLock),
	KeyPair("Fn + Kana", Qt::Key_F31),
	KeyPair("Fn + Zenkaku", Qt::Key_F25),
	KeyPair("Fn + -", Qt::Key_At),
	KeyPair("Fn + Space", Qt::Key_F23),
	KeyPair("Fn + ,", Qt::Key_Less),
	KeyPair("Fn + .", Qt::Key_Greater),
	KeyPair("Fn + Up", Qt::Key_Prior),
	KeyPair("Fn + Down", Qt::Key_Next),
	KeyPair("Fn + Left", Qt::Key_Home),
	KeyPair("Fn + Right", Qt::Key_End),
	KeyPair("", Qt::Key_unknown)
};

static int QtKeyCodeByName(const QString &name)
{
	static QMap<QString ,int> m;
	
	if (m.count() == 0)
		for (int i = 0; QtKeyPairs[i].code != Qt::Key_unknown; ++i)
			m.insert(QtKeyPairs[i].name, QtKeyPairs[i].code);
	
	if (m.contains(name))
		return m[name];
	
	return Qt::Key_unknown;
}

static const QString & QtKeyNameByCode(int code)
{
	static QMap<int, QString> m;
	
	if (m.count() == 0)
		for (int i = 0; QtKeyPairs[i].code != Qt::Key_unknown; ++i)
			m.insert(QtKeyPairs[i].code, QtKeyPairs[i].name);
	
	if (m.contains(code))
		return m[code];
	
	return QString::null;
}

static int HostKeyCodeByName(const QString &name)
{
	static QMap<QString, int> m;
	
	if (m.count() == 0)
		for (int i = 0; HostKeyPairs[i].code != 0x00; ++i)
			m.insert(HostKeyPairs[i].name, HostKeyPairs[i].code);
	
	if (m.contains(name))
		return m[name];
	
	return 0x00;
}

static const QString & HostKeyNameByCode(int code)
{
	static QMap<int, QString> m;
	
	if (m.count() == 0)
		for (int i = 0; HostKeyPairs[i].code != 0x00; ++i)
			m.insert(HostKeyPairs[i].code, HostKeyPairs[i].name);
	
	if (m.contains(code))
		return m[code];
	
	return QString::null;
}

/*
static unsigned char qtKeyCodeToWindowsVirtualKeyCode(int key)
{
	switch (key)
	{
		case Qt::Key_Escape:
			return VK_ESCAPE;
		case Qt::Key_Tab:
			return VK_TAB;
		case Qt::Key_Backtab:
			return 0x00;
		case Qt::Key_Backspace:
			return VK_BACK;
		case Qt::Key_Return:
			return VK_RETURN;
		case Qt::Key_Enter:
			return VK_RETURN;
		case Qt::Key_Insert:
			return VK_INSERT;
		case Qt::Key_Delete:
			return VK_DELETE;
		case Qt::Key_Pause:
			return VK_PAUSE;
		case Qt::Key_Print:
			return VK_PRINT;
		case Qt::Key_SysReq:
			return 0x00;
		case Qt::Key_Home:
			return VK_HOME;
		case Qt::Key_End:
			return VK_END;
		case Qt::Key_Left:
			return VK_LEFT;
		case Qt::Key_Up:
			return VK_UP;
		case Qt::Key_Right:
			return VK_RIGHT;
		case Qt::Key_Down:
			return VK_DOWN;
		case Qt::Key_Prior:
			return VK_PRIOR;
		case Qt::Key_Next:
			return VK_NEXT;
		case Qt::Key_Shift:
			return VK_SHIFT;
		case Qt::Key_Control:
			return VK_CONTROL;
		case Qt::Key_Meta:
			return 0x00;
		case Qt::Key_Alt:
			return VK_MENU;
		case Qt::Key_CapsLock:
			return 0x00;
		case Qt::Key_NumLock:
			return VK_NUMLOCK;
		case Qt::Key_ScrollLock:
			return VK_SCROLL;
		case Qt::Key_F1:
			return VK_F1;
		case Qt::Key_F2:
			return VK_F2;
		case Qt::Key_F3:
			return VK_F3;
		case Qt::Key_F4:
			return VK_F4;
		case Qt::Key_F5:
			return VK_F5;
		case Qt::Key_F6:
			return VK_F6;
		case Qt::Key_F7:
			return VK_F7;
		case Qt::Key_F8:
			return VK_F8;
		case Qt::Key_F9:	// Calendar
			return VK_F9;
		case Qt::Key_F10:	// Address
			return VK_F10;
		case Qt::Key_F11:
			return VK_MENU;
		case Qt::Key_F12:	// Home
			return VK_F12;
		case Qt::Key_F13:	// Mail
			return VK_F13;
		case Qt::Key_F14:	// hold Mail
			return VK_F14;
		case Qt::Key_F15:
			return VK_F15;
		case Qt::Key_F16:
			return VK_F16;
		case Qt::Key_F17:
			return VK_F17;
		case Qt::Key_F18:
			return VK_F18;
		case Qt::Key_F19:
			return VK_F19;
		case Qt::Key_F20:
			return VK_F20;
		case Qt::Key_F21:	// 全/半
			return VK_MENU;
		case Qt::Key_F22:	// Fn
			return VK_F22;
		case Qt::Key_F23:	// Fn + Space
			return VK_F23;
		case Qt::Key_F24:
			return VK_F24;
		case Qt::Key_F25:	// Fn + 全/半
			return 0x00;
		case Qt::Key_F26:	// カナひら
			return VK_CONTROL;
		case Qt::Key_F31:	// Fn + カナひら
			return 0x00;
		case Qt::Key_F32:	// hold Calendar
			return 0x00;
		case Qt::Key_F33:	// OK
			return 0x00;
		case Qt::Key_Super_L:
			return 0x00;
		case Qt::Key_Super_R:
			return 0x00;
		case Qt::Key_Menu:
			return 0x00;
		case Qt::Key_Hyper_L:
			return 0x00;
		case Qt::Key_Hyper_R:
			return 0x00;
		case Qt::Key_Help:
			return VK_HELP;
		case Qt::Key_Space:
			return VK_SPACE;
		case Qt::Key_Exclam:
			return 0x00;
		case Qt::Key_QuoteDbl:
			return 0x00;
		case Qt::Key_NumberSign:
			return 0x00;
		case Qt::Key_Dollar:
			return 0x00;
		case Qt::Key_Percent:
			return 0x00;
		case Qt::Key_Ampersand:
			return 0x00;
		case Qt::Key_Apostrophe:
			return 0x00;
		case Qt::Key_ParenLeft:
			return 0x00;
		case Qt::Key_ParenRight:
			return 0x00;
		case Qt::Key_Asterisk:
			return VK_MULTIPLY;
		case Qt::Key_Plus:
			return VK_ADD;
		case Qt::Key_Comma:
			return VK_SEPARATOR;
		case Qt::Key_Minus:
			return VK_SUBTRACT;
		case Qt::Key_Period:
			return VK_DECIMAL;
		case Qt::Key_Slash:
			return VK_DIVIDE;
		case Qt::Key_0:
			return '0';
		case Qt::Key_1:
			return '1';
		case Qt::Key_2:
			return '2';
		case Qt::Key_3:
			return '3';
		case Qt::Key_4:
			return '4';
		case Qt::Key_5:
			return '5';
		case Qt::Key_6:
			return '6';
		case Qt::Key_7:
			return '7';
		case Qt::Key_8:
			return '8';
		case Qt::Key_9:
			return '9';
		case Qt::Key_Colon:
			return VK_OEM_1;
		case Qt::Key_Semicolon:
			return VK_OEM_PLUS;
		case Qt::Key_Less:
			return 0x00;
		case Qt::Key_Equal:
			return 0x00;
		case Qt::Key_Greater:
			return 0x00;
		case Qt::Key_Question:
			return 0x00;
		case Qt::Key_At:
			return VK_OEM_3;
		case Qt::Key_A:
			return 'A';
		case Qt::Key_B:
			return 'B';
		case Qt::Key_C:
			return 'C';
		case Qt::Key_D:
			return 'D';
		case Qt::Key_E:
			return 'E';
		case Qt::Key_F:
			return 'F';
		case Qt::Key_G:
			return 'G';
		case Qt::Key_H:
			return 'H';
		case Qt::Key_I:
			return 'I';
		case Qt::Key_J:
			return 'J';
		case Qt::Key_K:
			return 'K';
		case Qt::Key_L:
			return 'L';
		case Qt::Key_M:
			return 'M';
		case Qt::Key_N:
			return 'N';
		case Qt::Key_O:
			return 'O';
		case Qt::Key_P:
			return 'P';
		case Qt::Key_Q:
			return 'Q';
		case Qt::Key_R:
			return 'R';
		case Qt::Key_S:
			return 'S';
		case Qt::Key_T:
			return 'T';
		case Qt::Key_U:
			return 'U';
		case Qt::Key_V:
			return 'V';
		case Qt::Key_W:
			return 'W';
		case Qt::Key_X:
			return 'X';
		case Qt::Key_Y:
			return 'Y';
		case Qt::Key_Z:
			return 'Z';
		case Qt::Key_BracketLeft:
			return VK_OEM_4;
		case Qt::Key_Backslash:
			return VK_OEM_102;
		case Qt::Key_BracketRight:
			return VK_OEM_6;
		case Qt::Key_AsciiCircum:
			return 0x00;
		case Qt::Key_Underscore:
			return 0x00;
		case Qt::Key_QuoteLeft:
			return 0x00;
		case Qt::Key_BraceLeft:
			return 0x00;
		case Qt::Key_Bar:
			return 0x00;
		case Qt::Key_BraceRight:
			return 0x00;
		case Qt::Key_AsciiTilde:
			return 0x00;

		case Qt::Key_nobreakspace:
			return 0x00;
		case Qt::Key_exclamdown:
			return 0x00;
		case Qt::Key_cent:
			return 0x00;
		case Qt::Key_sterling:
			return 0x00;
		case Qt::Key_currency:
			return 0x00;
		case Qt::Key_yen:
			return 0x00;
		case Qt::Key_brokenbar:
			return 0x00;
		case Qt::Key_section:
			return 0x00;
		case Qt::Key_diaeresis:
			return 0x00;
		case Qt::Key_copyright:
			return 0x00;
		case Qt::Key_ordfeminine:
			return 0x00;
		case Qt::Key_guillemotleft:
			return 0x00;
		case Qt::Key_notsign:
			return 0x00;
		case Qt::Key_hyphen:
			return 0x00;
		case Qt::Key_registered:
			return 0x00;
		case Qt::Key_macron:
			return 0x00;
		case Qt::Key_degree:
			return 0x00;
		case Qt::Key_plusminus:
			return 0x00;
		case Qt::Key_twosuperior:
			return 0x00;
		case Qt::Key_threesuperior:
			return 0x00;
		case Qt::Key_acute:
			return 0x00;
		case Qt::Key_mu:
			return 0x00;
		case Qt::Key_paragraph:
			return 0x00;
		case Qt::Key_periodcentered:
			return 0x00;
		case Qt::Key_cedilla:
			return 0x00;
		case Qt::Key_onesuperior:
			return 0x00;
		case Qt::Key_masculine:
			return 0x00;
		case Qt::Key_guillemotright:
			return 0x00;
		case Qt::Key_onequarter:
			return 0x00;
		case Qt::Key_onehalf:
			return 0x00;
		case Qt::Key_threequarters:
			return 0x00;
		case Qt::Key_questiondown:
			return 0x00;
		case Qt::Key_Agrave:
			return 0x00;
		case Qt::Key_Aacute:
			return 0x00;
		case Qt::Key_Acircumflex:
			return 0x00;
		case Qt::Key_Atilde:
			return 0x00;
		case Qt::Key_Adiaeresis:
			return 0x00;
		case Qt::Key_Aring:
			return 0x00;
		case Qt::Key_AE:
			return 0x00;
		case Qt::Key_Ccedilla:
			return 0x00;
		case Qt::Key_Egrave:
			return 0x00;
		case Qt::Key_Eacute:
			return 0x00;
		case Qt::Key_Ecircumflex:
			return 0x00;
		case Qt::Key_Ediaeresis:
			return 0x00;
		case Qt::Key_Igrave:
			return 0x00;
		case Qt::Key_Iacute:
			return 0x00;
		case Qt::Key_Icircumflex:
			return 0x00;
		case Qt::Key_Idiaeresis:
			return 0x00;
		case Qt::Key_ETH:
			return 0x00;
		case Qt::Key_Ntilde:
			return 0x00;
		case Qt::Key_Ograve:
			return 0x00;
		case Qt::Key_Oacute:
			return 0x00;
		case Qt::Key_Ocircumflex:
			return 0x00;
		case Qt::Key_Otilde:
			return 0x00;
		case Qt::Key_Odiaeresis:
			return 0x00;
		case Qt::Key_multiply:
			return 0x00;
		case Qt::Key_Ooblique:
			return 0x00;
		case Qt::Key_Ugrave:
			return 0x00;
		case Qt::Key_Uacute:
			return 0x00;
		case Qt::Key_Ucircumflex:
			return 0x00;
		case Qt::Key_Udiaeresis:
			return 0x00;
		case Qt::Key_Yacute:
			return 0x00;
		case Qt::Key_THORN:
			return 0x00;
		case Qt::Key_ssharp:
			return 0x00;
		case Qt::Key_agrave:
			return 0x00;
		case Qt::Key_aacute:
			return 0x00;
		case Qt::Key_acircumflex:
			return 0x00;
		case Qt::Key_atilde:
			return 0x00;
		case Qt::Key_adiaeresis:
			return 0x00;
		case Qt::Key_aring:
			return 0x00;
		case Qt::Key_ae:
			return 0x00;
		case Qt::Key_ccedilla:
			return 0x00;
		case Qt::Key_egrave:
			return 0x00;
		case Qt::Key_eacute:
			return 0x00;
		case Qt::Key_ecircumflex:
			return 0x00;
		case Qt::Key_ediaeresis:
			return 0x00;
		case Qt::Key_igrave:
			return 0x00;
		case Qt::Key_iacute:
			return 0x00;
		case Qt::Key_icircumflex:
			return 0x00;
		case Qt::Key_idiaeresis:
			return 0x00;
		case Qt::Key_eth:
			return 0x00;
		case Qt::Key_ntilde:
			return 0x00;
		case Qt::Key_ograve:
			return 0x00;
		case Qt::Key_oacute:
			return 0x00;
		case Qt::Key_ocircumflex:
			return 0x00;
		case Qt::Key_otilde:
			return 0x00;
		case Qt::Key_odiaeresis:
			return 0x00;
		case Qt::Key_division:
			return 0x00;
		case Qt::Key_oslash:
			return 0x00;
		case Qt::Key_ugrave:
			return 0x00;
		case Qt::Key_uacute:
			return 0x00;
		case Qt::Key_ucircumflex:
			return 0x00;
		case Qt::Key_udiaeresis:
			return 0x00;
		case Qt::Key_yacute:
			return 0x00;
		case Qt::Key_thorn:
			return 0x00;
		case Qt::Key_ydiaeresis:
			return 0x00;
		
		case 0x200f:	// Fn + 1
			return VK_F1;
		case 0x2010:	// Fn + 2
			return VK_F2;
		case 0x2012:	// Fn + 3
			return VK_F3;
		case 0x2011:	// Fn + 4
			return VK_F4;
		case 0x201b:	// Fn + 5
			return VK_F5;
		case 0x200a:	// Fn + 6
			return VK_F6;
		case 0x200b:	// Fn + 7
			return VK_F7;
		case 0x200c:	// Fn + 8
			return VK_F8;
		case 0x2007:	// Fn + 9
			return VK_F9;
		case 0x2008:	// Fn + 0
			return VK_F10;
		case 0x2014:	// Fn + Q
		case 0x2017:	// Fn + A
		case 0x2018:	// Fn + S
		case 0x2015:	// Fn + O
			return VK_F11;
		case 0x2016:	// Fn + P
			return VK_F12;
		case 0x2019:	// Fn + N
		case 0x201a:	// Fn + M
			return 0x00;
		
		case Qt::Key_unknown:
			return 0x00;
	}
	
	return 0x00;
}
*/

#endif	// KEYCODEUTIL_H
